ZIP contents


ROTTIPX      <DIR>         IPX source BC 3.1 format
ROTTSER      <DIR>         SERIAL source BC 3.1 format
ROTTNET  C           4,861 ROTT<->DRIVER interface code
ROTTNET  H           1,955 "
RT_NET   H           7,008 ROTT packet headers with size info
README   TXT         3,366 This file


ROTT Network Specification:

ROTT does all of it's multi-player communication through a user interrupt
in the range of 0x60 - 0x66.  This is all very similar to DOOM.


Data is passed back in forth between ROTT and the real mode driver by
means of the ROTTNET structure defined in "ROTTNET.H".  "ROTTNET.H" should
not be changed, since it is compiled into ROTT itself.  Here is a
description of what each item in the ROTTNET structure does:

typedef struct
   {
   //
   // The interrupt on which ROTT and the caller are to communicate
   //
   short   intnum;  // ROTT executes an int to send commands

   // communication between ROTT and the driver

   //
   // what type of command we are sending to the real mode driver,
   // a get packet or send packet command
   //

   short   command;                // CMD_SEND or CMD_GET

   //
   // the destination node when we send packets, and the source node when
   // we receive packets.  In network games, the following convention is
   // used for player numbers:
   //
   // For Clients:
   //
   // address 0: their local address
   // address 1: the address of the server
   //
   // For the Packet Server:
   // address 0: local address
   // address 1: address of player 1, if standalone
   //            local address if client on top of server
   //            but still the address of player 1
   // address 2: address of player 2
   // address 3: address of player 3
   // address 4: address of player 4
   //  .
   //  .
   //  .
   //
   // In MODEM games the destination and source are pretty unused since
   // only two player are capable of playing.
   //
   // upon getting a packet, if remotenode = -1 there is no packet ready
   //
   short   remotenode;  // dest for send, set by get (-1 = no packet)

   //
   // length the packet to send
   // length of the packet received
   //
   short   datalength;  // bytes in rottdata to be sent / bytes read

   // info specific to this node

   //
   // The player number of this node
   // In MODEM games it is either 0 or 1
   //
   // IN NETWORK games
   //
   // player 1 = 1
   // player 2 = 2
   // player 3 = 3
   // etc.
   // passing in a consoleplayer value of 0 signifies standalone server
   //
   short   consoleplayer;  // 0-(numplayers-1) = player number

   //
   // numplayers in the game
   //
   short   numplayers;     // 1-11

   //
   // whether the current computer is a server or a client
   //
   short   client;         // 0 = server 1 = client

   //
   // whether we are playing a modem or network game
   //
   short   gametype;       // 0 = modem  1 = network

   //
   // space between packet times
   //
   // 1 = 35   FPS control update speed
   // 2 = 17.5 FPS control update speed
   // 3 = 11.7 FPS control update speed
   // 4 = 8.75 FPS control update speed
   //
   short   ticstep;        // 1 for every tic 2 for every other tic ...

   //
   // whether this station is capable of sending live remote ridicule
   // ticstep is set to 1 if this is enabled.
   // bandwith of comm device must be capable of 256*35 = 8960 bytes per
   // second.

   short   remoteridicule; // 0 = remote ridicule is off 1= rr is on

   // packet data to be sent
   char    data[MAXPACKETSIZE];
   } rottcom_t;


If you have any questions give me a call or drop me a note

Mark Dochtermann
(214) 271 - 1365 ext. 210
paradigm@metronet.com
